<?php
/**
 * 1、设计模式学习-工厂方法模式
 * 数组处理控制器
 * 2020年1月8日23:12:17
 */
namespace Application\Controller;

class ArraysFactoryController extends BaseController
{
    // 没有使用工厂方法模式，对数组进行处理
    public function noUseFactory()
    {
        $array = array(
            '键' => '值',
            'key' => 'value',
        );
        echo '原数组为：';
        export($array);
        // 将数组转化为 JSON 字符串
        $json_arrays = new \Application\Common\Factory\JsonArrays($array);
        $json_result = $json_arrays -> handle();
        // 获取所有键
        $keys_arrays = new \Application\Common\Factory\KeysArrays($array);
        $keys_result = $keys_arrays -> handle();
        echo '处理后为：';
        export($json_result);
        export($keys_result);
        // 总结：简单实用，引入对应的类操作
    }
    // 使用工厂方法模式，对数组进行处理
    public function useFactory()
    {
        $array = array(
            '键' => '值',
            'key' => 'value',
        );
        $factory = new \Application\Common\Factory\Factory();
        // 数组转化为 JSON 字符串
        $json_arrays = $factory -> getHandle('json');
        $json_arrays -> this_array = $array;
        $json_result = $json_arrays -> handle();
        // 获取数组的所有键
        $keys_arrays = $factory -> getHandle('keys');
        $keys_arrays -> this_array = $array;
        $keys_result = $keys_arrays -> handle();
        echo '原数组为：';
        export($array);
        echo '处理后为：';
        export($json_result);
        export($keys_result);
        // 总结：使用工厂，引入一个工厂类进行操作即可
    }
}
